💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    axios 및 함수형태 | ✅저자: 이유정(박사)

    🔹 Axios란? Axios는 JavaScript에서 HTTP 요청을 보내기 위한 라이브러리입니다.
    쉽게 말하면, 웹페이지(JavaScript)에서 백엔드(API 서버)에 데이터를 보내거나 가져오는 도구입니다.

    ❓ Axios를 왜 쓰나요?

    • API 요청 간편화 fetch()보다 코드가 짧고 직관적입니다.
    • 응답 자동 처리 JSON을 자동으로 파싱합니다.
    • 에러 처리 간편 try...catch로 예외를 쉽게 다룰 수 있습니다.
    • 브라우저 호환성 좋음 Internet Explorer까지 지원합니다.
    • 요청 취소, 인터셉터 지원 고급 기능도 내장돼 있습니다.

    자바스크립트 함수는 기본적으로 현재 로드된 HTML 페이지에서만 동작합니다.


    📖 axios 문법:

    axios.get('https://example.com/api/data') //서버에 GET 요청
      .then(response => {
        console.log(response.data);  // 요청 성공시 실행
      })
      .catch(error => {
        console.error(error);  // 요청 실패시 실행
      });
    

    📖 클릭이벤트 + axios:

    <button id="loadBtn">데이터 불러오기</button>
    
    <script>
    document.getElementById('loadBtn').addEventListener('click', function () {
      axios.get('/api/data')
        .then(function (response) {
          console.log("응답 데이터:", response.data);
        })
        .catch(function (error) {
          console.error("에러 발생:", error);
        });
    });
    </script>
    

    axiosaxiosInstance는 같은 Axios 라이브러리를 기반으로 하지만, 사용 방식에 차이가 있습니다.

    항목 axios axiosInstance
    정의 Axios 기본 객체 사용자가 설정한 맞춤형 인스턴스
    특징 매번 직접 옵션 설정 공통 설정을 미리 지정하고 재사용 가능
    사용 예 axios.get(...) axiosInstance.get(...)
    활용도 간단한 요청에 적합 공통 헤더, 토큰, 기본 URL 등이 필요한 경우 유용

    📖 기본 함수 선언:

    function sayHello() {
      console.log("안녕하세요!");
    }
    
    sayHello();  // 호출
    

    function 함수이름()으로 시작하면 어디서든 호출 가능

    📖 함수 표현식 (Expression):

    const sayHi = function () {
      console.log("안녕!");
    };
    
    sayHi();  // 호출
    

    함수도 변수처럼 다룰 수 있고, 함수명이 없어도 됨 (익명 함수)

    📖 화살표 함수 (Arrow Function):

    const multiply = (x, y) => {
      return x * y;
    };
    
    console.log(multiply(2, 4));  // 8
    

    한 줄일 때는 생략 가능:

    const double = n => n * 2;
    

    n은 함수의 매개변수(파라미터)입니다.

    📖 콜백 함수 (함수 안에 함수):

    function greet(name, callback) {
      console.log("안녕하세요, " + name);
      callback();  // 함수 실행
    }
    
    greet("철수", function () {
      console.log("콜백 함수 실행!");
    });
    

    greet("철수", ...) : greet 함수 호출 "철수" : 첫번째 인자 function() { ... } : 두번째 인자 - 콜백함수(익명함수정의) greet 함수 안의 callback() : 이때 전달된 함수가 실제로 실행되는 위치

                 // ↓ 두 번째 인자 (익명 함수)
    greet("철수", function () {
      console.log("콜백 함수 실행!");
    });
    
    // →  greet 함수 안으로 들어감
        name = "철수"
        callback = function () { ... }
    
    greet 내부에서:
      console.log("안녕하세요, 철수");
      callback();  // →  여기서 아까 전달된 함수를 실행!
    

    📖 이벤트 핸들러 함수:

    document.getElementById('myBtn').addEventListener('click', function () {
      alert("버튼이 클릭되었습니다!");
    });
    

    모듈화한 함수들이 모두 서로를 호출하는 연쇄(chain) 구조이기 때문에, 하나라도 빠뜨리면 그 다음 단계로 넘어가지 못해서 리스트가 아예 그려지지 않습니다. 그래서 처음부터 기능별 섹션 모듈을 나누어 짜두는것이 중요합니다.

    // 1) 설정(Config) ----------------------------
    const axiosInstance = …;
    
    // 2) 초기화 & 이벤트 바인딩(Init) ------------
    function init() { … }
    function bindUIEvents() { … }
    
    // 3) 데이터 처리(Data) -------------------------
    function fetchTodoData(page) { … }
    function extractTodoArray(data) { … }
    
    // 4) 렌더링(View) -----------------------------
    function renderTodoList(todos) { … }
    function createTodoElement(todo) { … }
    function renderPagination(data, page) { … }
    
    // 5) 핸들러(Handlers) --------------------------
    function onCreateClick() { … }
    function detailView(id) { … }
    function toComplete(id) { … }
    
    // 6) 유틸(Util) -------------------------------
    function datetimeToString(str) { … }
    
    // 7) 실행(Entry Point) -------------------------
    document.addEventListener('DOMContentLoaded', init);
    
    TOP
    preload preload